import createElement from "./createElement"
import updateChildren from "./updateChildren"
export default function patchVnode(oldVnode,newVnode){

  /* 
    是不是同一个对象   是   什么都不用做
    不是
    newVnode有没有text  有    如果oldVnode也有text,则比较是否相同,相同什么都不做,不相同 或者没有text直接用innerText替换子节点
    没有 
    oldVnode有没有children  有  算法比较
    没有 
    则说明是有text  需要清空 oldVnode 并将newVnode的children添加到DOM中
  
  */
  // 判断是不是同一个对象
  if(oldVnode === newVnode) return
  // 判断newVnode 有没有text属性
  if(newVnode.text) {
    if(newVnode.text === oldVnode.text) return
    else{
      oldVnode.elm.innerText = newVnode.text
    }
  }else{
    // newVnode有children
    if(oldVnode.children){
      // 这是最麻烦的情况
      updateChildren(oldVnode.elm, oldVnode.children, newVnode.children)
    }else{
      // 说明有text
      oldVnode.elm.innerText = ""
      // 遍历newVnode的children
      for(const child of newVnode.children){
        // 这里好像oldVnode的children并没有更新  按理说 patch 应该只是用来更新节点不会更新 节点内部的内容
        const newch = createElement(child)
        oldVnode.elm.appendChild(newch)
      }
    }
  }

}